/******************************************************************
系统名称: 恒生电子手机银行3.0
类  名  称: BaseDao.java
软件版权: 恒生电子股份有限公司
系统版本: 1.0
开发人员: lulei
开发时间: 2014-7-24
功能说明: 封装数据源
审核人员: 
相关文档: 
修改记录: 需求编号         修改日期         修改人员                     修改说明
 
******************************************************************/
package com.hundsun.fcp.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.hundsun.fcp.db.MobileBankDb;

public class BaseDao {
	
	private MobileBankDb mMobileDB;
	
	public BaseDao(Context context) {
		mMobileDB = MobileBankDb.getInstance(context);	
	}
	
	/**
	 * 获取可写的SQLiteDatabase
	 * @return
	 */
	protected SQLiteDatabase openW() {
		return mMobileDB.getWritableDB();
	}
	
	/**
	 * 获取可读的SQLiteDatabase
	 * @return
	 */
	protected SQLiteDatabase openR() {
		return mMobileDB.getReadableDB();
	}
	
	/**
	 * 开始事务
	 */
	protected void beginTransaction() {
		openW().beginTransaction();
	}
	
	/**
	 * 设置事务状态
	 */
	protected void setTransactionSuccessful() {
		openW().setTransactionSuccessful();
	}
	
	/**
	 * 根据事务状态，结束事务.
	 */
	protected void endTransaction() {
		openW().endTransaction();
	}
	
	/**
	 * 关闭游标
	 * @param c
	 */
	protected void close(Cursor c) {
		if (c != null) {
			c.close();
		}
	}
	
	/**
	 * 获取结果条数
	 * @param cursor
	 * @return
	 */
	public int getCount(Cursor cursor) {
		return cursor != null ? cursor.getCount() : 0;
	}
	
	
	
	/**
	 * 判断表是否存在
	 * @param tableName
	 * @return
	 */
	public boolean existTable(String tableName) {
		String sql = "select name from sqlite_master where type='table' and name = '" + tableName + "'";
		Cursor cursor = null;
		try {
			cursor = this.openR().rawQuery(sql, null);
			int count = this.getCount(cursor);
			return count > 0;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.close(cursor);
		}
		return false;
	}
	
}
